package com.newx.file.service;

import cn.hutool.core.util.ObjectUtil;
import com.newx.common.util.SpringContext;
import com.newx.file.enums.FileApiEnum;
import com.newx.file.handler.NewxFileException;
import com.newx.file.template.AbstractFileApiTemplate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author yxl
 * @date 2024/7/22 0022 14:54
 */
//@Service
@Slf4j
@Service
public class NewxFileServiceImpl implements NewxFileService {

    @Override
    public Object fileApiRoute(String engine, MultipartFile file) {
        // 获取模板名称
        if(!FileApiEnum.checkGateway(engine)){
            log.error("传入存储引擎错误engine=" + engine);
            throw new NewxFileException("传入存储引擎错误");
        }
        if (file.isEmpty()) {
            throw new NewxFileException("文件为空,请重新选择!");
        }
        // 获取文件原始名(包含后缀名)
        String orgName = file.getOriginalFilename();
        if(!orgName.contains(".")) {
            throw new NewxFileException("上传图片格式错误,请重新选择！");
        }
        String template = FileApiEnum.getBeanNameByGateway(engine);
        if(ObjectUtil.isNotEmpty(template)){
            AbstractFileApiTemplate abstractTemplate = SpringContext.getBean(template);
            return abstractTemplate.uploadFile(file);
        }else{
            log.error("未找到模板gateway=" + engine);
            throw new NewxFileException("无法找到处理的模板名称，请检查配置");
        }
    }
}
